package com.yxinsur.imc.business.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxinsur.imc.business.domain.ImcRecnSupplierDetails;
import com.yxinsur.imc.business.vo.RecnDetailsVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 首期供应商上传手续费清单 Mapper接口
 *
 * @author imc
 * @date 2021-05-14
 */
@Mapper
public interface ImcRecnSupplierDetailsMapper extends BaseMapper<ImcRecnSupplierDetails> {
    /**
     * 根据{主表ID}查询S表
     *
     * @param recnId   主表ID
     * @param tenantId 租户ID
     * @return 结果
     */
    List<ImcRecnSupplierDetails> selectImcRecnSupplierDetailsByRecnId(@Param("recnId") Long recnId, @Param("tenantId") Long tenantId);

    /**
     * 查询S表列表
     *
     * @param imcRecnSupplierDetails S表
     * @return List<ImcRecnSupplierDetails>
     */
    List<ImcRecnSupplierDetails> selectImcRecnSupplierDetailsList(ImcRecnSupplierDetails imcRecnSupplierDetails);

    /**
     * 根据{主表ID}查询S表（COUNT）
     *
     * @param recnId          主表ID
     * @param recnCheckResult 核对结果
     * @param tenantId        租户ID
     * @return 结果
     */
    long countOfSupplierDetailsByRecnId(@Param("recnId") Long recnId, @Param("recnCheckResult") String recnCheckResult, @Param("tenantId") Long tenantId);

    /**
     * 新增S表
     *
     * @param imcRecnSupplierDetails S表
     * @return 结果
     */
    int insertImcRecnSupplierDetails(ImcRecnSupplierDetails imcRecnSupplierDetails);

    /**
     * 批量更新S表核对结果
     *
     * @param sVoList S表集合
     * @return 结果
     */
    int updateSupplierDetailsListOfCheckResult(@Param("list") List<RecnDetailsVo> sVoList);

    /**
     * 批量更新S表核对结果
     *
     * @param sList S表集合
     * @return 结果
     */
    int updateSupplierDetailsListOfDispose(@Param("list") List<ImcRecnSupplierDetails> sList);

    /**
     * 批量更新S表（批量逻辑删除）
     *
     * @param sList S表集合
     * @return 结果
     */
    int updateImcRecnSupplierDetailsListOfDelete(@Param("list") List<ImcRecnSupplierDetails> sList);

    /**
     * 根据{主表ID}查询S表对账项
     *
     * @param recnId   主表ID
     * @param tenantId 租户id
     * @return 结果
     */
    List<RecnDetailsVo> listRecnDetailsCheckItemVoByRecnId(@Param("recnId") Long recnId, @Param("tenantId") Long tenantId);

    /**
     * 根据{S表ID}查询S表
     *
     * @param id S表ID
     * @return ImcRecnSupplierDetails
     */
    ImcRecnSupplierDetails getImcRecnSupplierDetailsById(@Param("id") Long id);
}
